////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  lrme_1_0_0.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef LRME_1_0_0_H
#define LRME_1_0_0_H

#include "parametermodule.h"
#include "parameterfilesymboltable.h"
#include "parametertypes.h"
#include "ispglobalelements.h"

#define LRME_1_0_0_NAMESPACE_BEGIN namespace lrme_1_0_0 {
#define LRME_1_0_0_NAMESPACE_END }

LRME_1_0_0_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_lrme10_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_lrme10_reserveType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// search_range_x
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Horizontal search range to be used. The number of horizontal search locations is 2*search_range_x + 1.
    ///                Search range is restricted to 2 options only: +/-12 x +/-8 or +/-8 x +/-6.
    /// Default Value: 12
    /// Range:         [8, 12]
    /// Bit Depth:     4u
    /// Conversion:    No Conversion needed
    /// Notes:         Hide in GUI ! Constant: no dynamic configuration even when control variable change.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 search_range_x;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// search_range_y
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Vertical search range to be used. The number of vertical search locations is 2*search_range_y + 1. Search
    ///                range is restricted to 2 options only: +/-12 x +/-8 or +/-8 x +/-6.
    /// Default Value: 8
    /// Range:         [6, 8]
    /// Bit Depth:     4u
    /// Conversion:    No Conversion needed
    /// Notes:         Hide in GUI ! Constant: no dynamic configuration even when control variable change.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 search_range_y;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// sub_pel_search_enable
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Whether sub-pixel ME (Optical Flow) is enabled.
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Conversion:    No Conversion needed
    /// Notes:         Hide in GUI ! Constant: no dynamic configuration even when control variable change.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 sub_pel_search_enable;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// transform_model
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Defines which transform model to use during transform estimation stage (0=projective, 1=affine, 2=rigid,
    ///                3=rigid with post-processing).
    /// Default Value: 2
    /// Range:         [0, 3]
    /// Bit Depth:     2u
    /// Conversion:    No Conversion needed
    /// Notes:         Constant: no dynamic configuration even when control variable change.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 transform_model;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// search_range_override
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Defines the strategy of determining the search_range: . 0 = Flow decisions may override chromatix value.
    ///                1 = Chromatix value is used irrespective of flow decisions.
    /// Default Value: 0
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Conversion:    No Conversion needed
    /// Notes:         Hide in GUI ! Constant: no dynamic configuration even when control variable change.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 search_range_override;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// lrme10_rgn_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct lrme10_rgn_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// max_allowed_sad
    ///
    /// Tuning Level:  often_tune
    /// Description:   Maximum allowed SAD. If SAD exceeds this threshold the block will be marked invalid (probably ME problem
    ///                due to occlusion, too fast motion, etc).
    /// Default Value: 1200
    /// Range:         [0, 32767]
    /// Bit Depth:     15u
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                           max_allowed_sad;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// min_allowed_tar_mad
    ///
    /// Tuning Level:  often_tune
    /// Description:   Minimum allowed tarMAD value. If below this value (non-informative block) -- the block will be marked
    ///                invalid.
    /// Default Value: 96
    /// Range:         [0, 1023]
    /// Bit Depth:     10u
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                           min_allowed_tar_mad;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// meaningful_sad_diff
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Locations with regular SAD difference below this threshold are considered to have exactly the same
    ///                similarity measure (even if normalized SAD difference is big).
    /// Default Value: 5
    /// Range:         [0, 1023]
    /// Bit Depth:     10u
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                           meaningful_sad_diff;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// min_sad_diff_denom
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Determines the lower limit of denominator used in normalized difference of SAD calculation to avoid
    ///                overflow.
    /// Default Value: 384
    /// Range:         [0, 1023]
    /// Bit Depth:     10u
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                           min_sad_diff_denom;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// robustness_measure_dist_map_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Provides a requirement on minimal normalized difference of SADs at distance 1-9 pixels (for big distances
    ///                the expected differences should be big). Default values: 0, 128, 128, 128, 128, 128, 128, 128 (no penalty
    ///                to single pixel distance; afterwards same penalty for all other distances) .
    /// Default Value: 0, 128, 128, 128, 128, 128, 128, 128
    /// Range:         [0, 511]
    /// Bit Depth:     9u
    /// Length:        8
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct robustness_measure_dist_map_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// robustness_measure_dist_map - Array
        ///
        /// Tuning Level:  rarely_tune
        /// Default Value: 0, 128, 128, 128, 128, 128, 128, 128
        /// Length:        8
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT robustness_measure_dist_map[8];
    } robustness_measure_dist_map_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_transform_confidence
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Whether to calculate and apply transform confidence (based on coverage of the frame by LRME-calculated
    ///                valid MVs). Frames with higher coverage get higher confidence.
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                           enable_transform_confidence;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// transform_confidence_mapping_base
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Defines mapping function from calculated transform confidence to actually used transform confidence. The
    ///                calculated confidence is in the range 0:256 (8 bit fraction). The mapping is: actual confidence =
    ///                transform_confidence_mapping_base when calculated confidence is less or equal than
    ///                transform_confidence_mapping_c1; 256 when calculated confidence is greater than
    ///                transform_confidence_mapping_c2 and linear interpolation in-between.
    /// Default Value: 128
    /// Range:         [0, 255]
    /// Bit Depth:     8u
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                           transform_confidence_mapping_base;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// transform_confidence_mapping_c1
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Defines mapping function from calculated transform confidence to actually used transform confidence. The
    ///                calculated confidence is in the range 0:256 (8 bit fraction). The mapping is: actual confidence =
    ///                transform_confidence_mapping_base when calculated confidence is less or equal than
    ///                transform_confidence_mapping_c1; 256 when calculated confidence is greater than
    ///                transform_confidence_mapping_c2 and linear interpolation in-between.
    /// Default Value: 100
    /// Range:         [0, 255]
    /// Bit Depth:     8u, Q7
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                           transform_confidence_mapping_c1;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// transform_confidence_mapping_c2
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Defines mapping function from calculated transform confidence to actually used transform confidence. The
    ///                calculated confidence is in the range 0:256 (8 bit fraction). The mapping is: actual confidence =
    ///                transform_confidence_mapping_base when calculated confidence is less or equal than
    ///                transform_confidence_mapping_c1; 256 when calculated confidence is greater than
    ///                transform_confidence_mapping_c2 and linear interpolation in-between.
    /// Default Value: 240
    /// Range:         [0, 255]
    /// Bit Depth:     8u, Q7
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                           transform_confidence_mapping_c2;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// transform_confidence_thr_to_force_identity_transform
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   When calculated transform confidence (before mapping) is below this threshold, the transform is ignored
    ///                and replaced by identity transform. Hysteresis is used on this parameter to avoid excessive switching.
    /// Default Value: 100
    /// Range:         [0, 255]
    /// Bit Depth:     8u
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                           transform_confidence_thr_to_force_identity_transform;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_lrme10_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_lrme10_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::trigger_pt_type_aec aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lrme10_rgn_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    lrme10_rgn_dataType lrme10_rgn_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_lrme10_hdr_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_lrme10_hdr_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type_aec_hdr hdr_aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct hdr_aec_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_lrme10_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                   mod_lrme10_aec_dataCount;
        UINT32                   mod_lrme10_aec_dataID;
        mod_lrme10_aec_dataType* mod_lrme10_aec_data;
    } hdr_aec_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_lrme10_pre_scale_ratio_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_lrme10_pre_scale_ratio_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// pre_scale_ratio_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type      pre_scale_ratio_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// pre_scale_ratio_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct pre_scale_ratio_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_lrme10_hdr_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                       mod_lrme10_hdr_aec_dataCount;
        UINT32                       mod_lrme10_hdr_aec_dataID;
        mod_lrme10_hdr_aec_dataType* mod_lrme10_hdr_aec_data;
    } pre_scale_ratio_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_lrme10_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_lrme10_coreType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mod_lrme10_pre_scale_ratio_data - Array
    /// Min Length:    1
    /// Max Length:    Unbounded
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                               mod_lrme10_pre_scale_ratio_dataCount;
    UINT32                               mod_lrme10_pre_scale_ratio_dataID;
    mod_lrme10_pre_scale_ratio_dataType* mod_lrme10_pre_scale_ratio_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_lrme10Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_lrme10Type
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Binary file symbol table entry ID
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 SymbolTableID;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_section
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct enable_sectionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        globalelements::enable_flag_type en;
    } enable_section;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// module_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct module_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        INT32 major_revision;
        INT32 minor_revision;
        INT32 incr_revision;
    } module_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_variables
    ///
    /// Default Value: control_pre_scale_ratio, control_aec_exp_sensitivity_ratio, control_gain
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_variablesStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// control_var_type - Array
        /// Default Value: control_pre_scale_ratio, control_aec_exp_sensitivity_ratio, control_gain
        /// Length:        3
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        enum class control_var_typeEnum
        {
            control_pre_scale_ratio           = 0,
            control_exp_time_ratio            = 1,
            control_aec_exp_sensitivity_ratio = 2,
            control_lux_idx                   = 3,
            control_gain                      = 4
        } control_var_type[3];
    } control_variables;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_methodStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_exp_control
        /// Default Value: control_gain
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_type     aec_exp_control;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_hdr_control
        /// Default Value: control_aec_exp_sensitivity_ratio
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_hdr_type aec_hdr_control;
    } control_method;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_lrme10_reserve
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_lrme10_reserveType chromatix_lrme10_reserve;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_lrme10_core
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_lrme10_coreType    chromatix_lrme10_core;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_lrme10TypeClass
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class chromatix_lrme10TypeClass : public ParameterModule, public chromatix_lrme10Type
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const UINT16 MAJOR = 1;
    static const UINT16 MINOR = 0;
    static const UINT32 PATCH = 0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Default Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_lrme10TypeClass(
        const CHAR* name);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_lrme10TypeClass(
        const CHAR* name,
        UINT32 modeId,
        UINT16 mode,
        UINT16 subMode,
        UINT32 group);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~chromatix_lrme10TypeClass();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// GetName
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const CHAR* GetName(
        const CHAR* type);


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_lrme10_reserveType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_lrme10_reserveType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_lrme10_reserveType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load lrme10_rgn_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadlrme10_rgn_dataType(
        ParameterFileSymbolTableEntry* entry,
        lrme10_rgn_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load lrme10_rgn_dataType_robustness_measure_dist_map_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadlrme10_rgn_dataType_robustness_measure_dist_map_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        lrme10_rgn_dataType::robustness_measure_dist_map_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_lrme10_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_lrme10_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_lrme10_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_lrme10_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_lrme10_hdr_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_lrme10_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_lrme10_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_lrme10_hdr_aec_dataType_hdr_aec_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_lrme10_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_lrme10_pre_scale_ratio_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_lrme10_pre_scale_ratio_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_lrme10_pre_scale_ratio_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_lrme10_pre_scale_ratio_dataType_pre_scale_ratio_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_lrme10_pre_scale_ratio_dataType_pre_scale_ratio_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_lrme10_pre_scale_ratio_dataType::pre_scale_ratio_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_lrme10_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_lrme10_coreType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_lrme10_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_lrme10Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_lrme10Type(
        ParameterFileSymbolTableEntry* entry,
        chromatix_lrme10Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load enable_sectionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadenable_sectionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_lrme10Type::enable_sectionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load module_versionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmodule_versionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_lrme10Type::module_versionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_variablesStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_variablesStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_lrme10Type::control_variablesStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_methodStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_methodStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_lrme10Type::control_methodStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_lrme10_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_lrme10_hdr_aec_dataType(
        mod_lrme10_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_lrme10_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_lrme10_hdr_aec_dataType_hdr_aec_dataStruct(
        mod_lrme10_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_lrme10_pre_scale_ratio_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_lrme10_pre_scale_ratio_dataType(
        mod_lrme10_pre_scale_ratio_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_lrme10_pre_scale_ratio_dataType_pre_scale_ratio_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_lrme10_pre_scale_ratio_dataType_pre_scale_ratio_dataStruct(
        mod_lrme10_pre_scale_ratio_dataType::pre_scale_ratio_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_lrme10_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_lrme10_coreType(
        chromatix_lrme10_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_lrme10Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_lrme10Type(
        chromatix_lrme10Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Parse symbol table entry, and return a new object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ParameterModule* Parse(
        ParameterSetManager* manager,
        ParameterFileSymbolTableEntry* entry) const;

}; // End class chromatix_lrme10TypeClass

LRME_1_0_0_NAMESPACE_END
#endif // LRME_1_0_0_H

